//设备列表初始化
layui.use(['layer', 'datatable', 'datatableButton',  'datatableHtml5', 'datatablePrint', 'datatableColVis', 'datatableSelect'], function() {
    var $ = layui.jquery,
        layer = layui.layer;
    // oSort是排序类型数组, 'chinese-asc'是自己定义的类型的排序(*-asc || *-desc)名称
    // 插件应该会根据表格中的内容的类型(string, number, chinese)进行比较排序，
    // 如果以chinese类型来排序则用oSort['chinese-asc']和oSort['chinese-desc']的方法
    // oSort对应的function里面自定义比较方法
    $.fn.dataTableExt.oSort['chinese-asc'] = function(x, y) {
        //javascript自带的中文比较函数，具体用法可自行查阅了解
        return x.localeCompare(y);
    };

    $.fn.dataTableExt.oSort['chinese-desc'] = function(x, y) {
        return y.localeCompare(x);
    };

    // aTypes是插件存放表格内容类型的数组
    // reg赋值的正则表达式，用来判断是否是中文字符
    // 返回值push到aTypes数组，排序时扫描该数组，'chinese'则调用上面两个方法。返回null默认是'string'
    $.fn.dataTableExt.aTypes.push(
        function(sData) {
            var reg = /^[\u4e00-\u9fa5]{0,}$/;
            if(reg.test(sData)) {
                return 'chinese';
            }
            return null;
        }
    );
    $(document).ready(function() {
        var myTable = $('#deviceTable').DataTable({
            "processing": false, //DataTables载入数据时，是否显示‘进度’提示
            "stateSave": true, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态
            "scrollCollapse": true, //是否开启DataTables的高度自适应，当数据条数不够分页数据条数的时候，插件高度是否随数据条数而改变
            "paginationType": "full_numbers", //详细分页组，可以支持直接跳转到某页
            "language": lang, //提示信息
            "autoWidth": false, //自适应宽度，
            "lengthMenu": [12, 30, 50],
            "stripeClasses": ["odd", "even"], //为奇偶行加上样式，兼容不支持CSS伪类的场合
            "showRowNumber":true,
            "searching": false, //是否允许Datatables开启本地搜索
            "paging": true, //是否开启本地分页
            "lengthChange": true, //是否允许产品改变表格每页显示的记录数
            "info": false, //控制是否显示表格左下角的信息
            //跟数组下标一样，第一列从0开始，这里表格初始化时，第四列默认降序
            "order": [0, 'asc'], //asc升序   desc降序
            "aoColumnDefs": [{
                "orderable": false,
                "aTargets": [1,2,3,4,5,6] // 指定列不参与排序
            }],
            "deferRender": true, //延迟渲染
            //"ajax":"json/device.json",
            "ajax": {
                url : url +'/ic-iot/admin/'+adminId+'/devices',//117
                type : 'get',
                data:{
                    "currentPage":1,
                    "pageSize":999,
                },
                dataType : 'json',
                beforeSend: function(request) {
                    request.setRequestHeader("accessToken", accessToken);
                },
                success : function(data) {
                    if(data['code'] == 1){
                        if(data.result.length != 0)
                            $('#deviceTable').dataTable().fnAddData(data.result);
                        else
                            $('#deviceTable').dataTable().fnClearTable();
                    }else{
                        ifajax(data);
                    }
                }
            }, //数据的路径 "http://192.168.5.133:8081/ic-iot/admin/'+adminId+'/devices" /"json/device.json"

            "columns": [{ //定义列
                "data":"riwso",
                "render":function(data, type, full, meta ){
                    return (meta.row+1);
                },
                "sTitle": "序号", //标题
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }, {
                "data": function(obj){
                    var sceneId = getOption("sceneId",obj.sceneId);
                    return '['+sceneId+']'+obj.deviceName+'</br>'+obj.deviceNo+'<span type="checkbox" hidden="hidden" id=' + obj.deviceId + '></span>';
                },
                "sTitle": "设备名称", //标题
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }, {
                "data": function(obj) {
                    return getOption("deviceType",obj.deviceType);
                },
                "sTitle": "设备类型", //标题
                "sType": 'chinese',
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }, {
                "data":function(obj) {
                    return getOption("deviceStateColor",obj.deviceState);
                },
                "sTitle": "设备状态", //标题
                "sType": 'chinese',
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }, {
                "data": function(obj) {
                    if(obj.monitorPosition==null){
                        return "&nbsp;" +" " + "&nbsp;";
                    }else{
                        return "&nbsp;" + obj.monitorPosition + "&nbsp;";
                    }
                },
                "sTitle": "测点位置", //标题
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }, {
                "data": function(obj) {
                    return replaceTime(obj.createTime / 1000);
                },
                "sTitle": "创建时间", //标题
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }, {
                "data": function(obj) {
                    if(obj.deviceType == 2){
                        return '<span title="查看" data='+obj.deviceId+' class="handle-btn handle-btn-edit"><i class="layui-icon" style="font-size:20px; color:#5ebdc7;">&#xe60a;</i></span><span title="编辑" data='+obj.deviceId+' class="handle-btn handle-btn-updatepwd"><i class="linyer icon-edit" style="color:#5ebdc7;"></i></span><span title="设置" data='+obj.deviceId+' class="handle-btn handle-btn-Sets"><i class="layui-icon" style="font-size:20px; color:#5ebdc7;">&#xe620;</i></span><span title="删除" id='+obj.deviceId+' class="handle-btn handle-btn-delect"><i class="linyer icon-delect" style="color:#5ebdc7;"></i></span>';
                    }else{
                        return '<span title="查看" data='+obj.deviceId+' class="handle-btn handle-btn-edit"><i class="layui-icon" style="font-size:20px; color:#5ebdc7;">&#xe60a;</i></span><span title="编辑" data='+obj.deviceId+' class="handle-btn handle-btn-updatepwd"><i class="linyer icon-edit" style="color:#5ebdc7;"></i></span><span title="设置" data='+obj.deviceId+' class="handle-btn handle-btn-Set"><i class="layui-icon" style="font-size:20px; color:#5ebdc7;">&#xe620;</i></span><span title="删除" id='+obj.deviceId+' class="handle-btn handle-btn-delect"><i class="linyer icon-delect" style="color:#5ebdc7;"></i></span>';
                    }

                },
                "className": "td-handle",
                "sTitle": "操作", //标题
                "sDefaultContent": "", //此列默认值为""，以防数据中没有此值，DataTables加载数据的时候报错
            }]
        });


        /**
         * 添加falsh
         */
        $.fn.dataTable.Buttons.swfPath = "js/dataTables/extensions/Buttons/swf/flashExport.swf";
        $.fn.dataTable.Buttons.defaults.dom.container.className = 'tableTools-box';

        //console.log(myTable);
        myTable.buttons().container().appendTo($('.tableTools'));

        /**
         * 选择
         */
        myTable.on('select', function(e, dt, type, index) {
            if(type === 'row') {
                $(myTable.row(index).node()).find('input:checkbox').prop('checked', true);
            }
        });
        /**
         * 取消选择
         */
        myTable.on('deselect', function(e, dt, type, index) {
            if(type === 'row') {
                $(myTable.row(index).node()).find('input:checkbox').prop('checked', false);
            }
        });
        /**
         * 根据表头复选框 选择/取消选择所有行
         */
        $(document).on('click', '#deviceTable > thead > tr > th input[type=checkbox],#deviceTable > tfoot > tr > th input[type=checkbox]', function() {
            var th_checked = this.checked;
            $('#deviceTable').find('tbody > tr').each(function() {
                var row = this;
                if(th_checked) myTable.row(row).select();
                else myTable.row(row).deselect();
            });
        });
        /**
         * 选中/取消选中复选框时 选中/取消选中一行
         */
        $(document).on('click', '#deviceTable tbody td input[type=checkbox]', function() {
            var row = $(this).closest('tr').get(0);
            if(!this.checked) myTable.row(row).deselect();
            else myTable.row(row).select();
        });
        $(document).on('click', '#deviceTable tbody td', function() {
            var row = $(this).closest('tr').get(0);
        })
    });

    /*设备-添加*/
    $("#btn-adduser").on('click', function() {
        var username = $(this).html();
        var href = 'device_add.html';
        layer_show(username, href, '', '600', '550');
    });

    /*用户设备查看*/
    $('.table-sort').on('click', '.handle-btn-edit',  function() {
        var deviceId = $(this).attr("data");
        var username = '查看设备';
        var href = 'device_detail_tabs.html?deviceId='+deviceId;
        var index = layer.open({
            type:2,
            title:username,
            fixed:false,
            maxmin:false,
            area:['100%','100%'],
            content:href,
        });
        layer.full(index);
    });
    /*设备编辑*/
    $('.table-sort').on('click', '.handle-btn-updatepwd', function() {
        var deviceId = $(this).attr("data");
        layer_show('编辑', 'facilityCompile.html?deviceId='+deviceId, '', '700', '600');
    });
    /*设备设置*/
    $('.table-sort').on('click', '.handle-btn-Set', function() {
        var deviceId = $(this).attr("data");
        layer_show('设置', 'facilitySet.html?deviceId='+deviceId, '', '700', '500');
    });
    //九城建
    $('.table-sort').on('click', '.handle-btn-Sets', function() {
        var deviceId = $(this).attr("data");
        layer_show('编辑', 'jiuchengjian.html?deviceId='+deviceId, '', '700', '600');
    });
    /*设备删除*/
    $('.table-sort').on('click', '.handle-btn-delect', function() {
        var obj = $(this);
        var deviceId  = obj[0].id;
        layer.confirm('确认要删除吗？', {
            icon: 0,
            title: '警告',
            shade: false
        }, function(index) {
            $.ajax({
                url : url + '/ic-iot/devices/'+deviceId,
                type : 'delete',
                dataType : 'json',
                beforeSend: function(request) {
                    request.setRequestHeader("accessToken", accessToken);
                },
                success : function(data) {
                    if(data['code'] == 1){
                        $(obj).parents("tr").remove();//删除方法
                        layer.msg('已删除!', {
                            icon: 1,
                            time: 1000
                        });
                    }else{
                        ifajax(data);
                    }
                }
            });

        });
    });

    //批量删除
    $('#btn-delect-all').on('click', function() {
        //这是相对应的那一行数据移出
        //console.log($(".table-sort tbody :checkbox:checked").length);
        if($(".table-sort tbody :checkbox:checked").length == 0) {
            layer.msg('请选择需要删除的数据！', {
                icon: 0
            });
        } else {
            layer.confirm('确认要删除吗？', {
                icon: 0,
                title: '警告',
                shade: false
            }, function(index) {
                $(".table-sort tbody :checkbox:checked").parents('tr').remove(); //删除方法
                layer.msg('已删除!', {
                    icon: 1,
                    time: 1000
                });
            });
        }
    });

    //条件查询
    $(".btn_block > label").click(function() {
        $(this).siblings().removeClass("layui-btn-block").addClass("layui-btn-none");
        $(this).addClass("layui-btn-block");
    });

});